//-------------------------------------------------------------------------
// Copyright (c) 2000-2010 Ufinity. All Rights Reserved.
//
// This software is the confidential and proprietary information of
// Ufinity
//
// Original author: Administrator
//
//-------------------------------------------------------------------------
// UFINITY MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
// THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
// TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
// PARTICULAR PURPOSE, OR NON-INFRINGEMENT. UFINITY SHALL NOT BE
// LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
// MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
//
// THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE
// CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE
// PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT
// NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE
// SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE
// SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE
// PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). UFINITY
// SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR
// HIGH RISK ACTIVITIES.
//-------------------------------------------------------------------------
package com.password.safe.service;

import org.apache.log4j.Logger;

import com.password.safe.dao.PasswordSafeDao;


public class PasswordSafeService {
	private static Logger logger = Logger.getLogger(PasswordSafeService.class);
	
	private SecurityService securityService;
	private PasswordSafeDao passwordSafeDao;
	
	public void saveText(String text) {
		/*logger.debug("input text:" + text);
		StringBuffer temp = new StringBuffer();
		String[] items = text.split("\n");
		for (String item : items) {
			temp.append(item).append("\n");
		}
		String passwords = temp.toString();
		logger.debug("tidy text:" + passwords);*/
		String passwords = securityService.encode(text);
		passwordSafeDao.save(passwords);
	}
	
	public void saveText(String salt, String text) {
		/*logger.debug("input text:" + text);
		StringBuffer temp = new StringBuffer();
		String[] items = text.split("\n");
		for (String item : items) {
			temp.append(item).append("\n");
		}
		String passwords = temp.toString();
		logger.debug("tidy text:" + passwords);*/
		String passwords = securityService.encode(salt, text);
		passwordSafeDao.save(passwords);
	}
	
	public String getText() {
		logger.debug("get all passwords");
		String result = passwordSafeDao.getAllPasswords();
		if (result == null || result.length() == 0) return "";
		logger.debug("decode all passwords");
		return securityService.decode(result);
	}
	
	public String getText(String salt) {
		logger.debug("get all passwords by salt");
		String result = passwordSafeDao.getAllPasswords();
		if (result == null || result.length() == 0) return "";
		logger.debug("decode all passwords by salt");
		result = securityService.decode(salt, result);
		return result;
	}
	
	public SecurityService getSecurityService() {
		return securityService;
	}

	public void setSecurityService(SecurityService securityService) {
		this.securityService = securityService;
	}

	public PasswordSafeDao getPasswordSafeDao() {
		return passwordSafeDao;
	}

	public void setPasswordSafeDao(PasswordSafeDao passwordSafeDao) {
		this.passwordSafeDao = passwordSafeDao;
	}

	public static void main(String[] args) {
		PasswordSafeService service = new PasswordSafeService();
		System.out.println("result = " + service.getText());
	}
}
